import java.util.Arrays;
import java.util.Random;//可以用Random类来确定生成随机数的范围[0,n);
import java.util.Scanner;


public class TestDemo {

    //随即猜数字的游戏
    public static void main1(String[] args) {

        Scanner sc = new Scanner(System.in);//输入要猜的数字
        Random ra = new Random();
        int rum =ra.nextInt(101);//因为要取100为整数，左闭右开，所以我们需要确定100
        while(true){
            System.out.println("请输入要猜的数字:");
            int num = sc.nextInt();
            if(num < rum){
                System.out.println("你输入的小了");
            }else if(num > rum){
                System.out.println("你输入的大了");
            }else{
                System.out.println("恭喜你猜对了!");
                break;
            }
        }
        sc.close();
    }

    //数组的使用
    //3.求数组中的元素的平均值
    public static void main2(String[] args) {
        int[] array = new int[]{1, 2, 3, 4, 5, 6};
        System.out.println(avg(array));
    }

    public static double avg(int[] array) {
        int sum = 0;
        for (int i = 0; i < array.length; i++) {
            sum += array[i];
        }
        double ret = sum*1.0 / array.length;
        return ret;
    }

    //4.查找数组中的指定元素（顺序查找）
    public static int funChx(int[] array,int x) {
        for (int i = 0; i < array.length; i++) {
            if(array[i]==x){
                return i;
            }
        }
        return -1;
    }
    public static void main3(String[] args) {
        int[] array = new int[]{1,2,3,4,5};
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        System.out.println(funChx(array,a));
        sc.close();
    }

    //5.二分查找
//    博哥的模板
    public  static  int binarySearch(int[] array,int x){
        int left = 0;
        int right =array.length;
        while(left < right)
        {
            int mid =(left + right) / 2;
            if(x < array[mid]){
                right = mid - 1;
            }else if(x > array[mid]){
                left = mid + 1;
            }
            else{
                return mid;
            }
        }
        return -1;
    }

    //竞赛的模板
//    public static  int binarySearch2(int[] array,int key) {
//        int left = 0;
//        int right = array.length;
//        while (left + 1 != right) {//判断两者相邻的时候退出循环
//            int mid = (left + right) / 2;
//            if (key <= array[mid]) {
//                right = mid;
//            } else {
//                left = mid;
//            }
//        }
//        return right;
//  }
    public static void main4(String[] args) {
        int[] array = new int[]{1,5,4,6,19,3,2,21};
        Arrays.sort(array);//与C++中的竞赛中的库函数的sort函数是一样的，如果不写，那么便会从小到大的排序（升序）。
        Scanner sc =new Scanner(System.in);
        int x = sc.nextInt();
        //System.out.println(binarySearch(array,x));

        sc.close();
    }

    public static void main(String[] args) {
        int[] array = new int[]{1,5,4,6,19,3,2,21};
        Scanner sc =new Scanner(System.in);
        int x = sc.nextInt();
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));
        System.out.println(Arrays.binarySearch(array, x));//用Java中的方法的类来实现二分查找
        sc.close();
    }


}
